/*
 * SPDX-FileCopyrightText: 2024 Andrew Gunnerson
 * SPDX-License-Identifier: GPL-3.0-only
 */

package com.sanji.audio_test.rule

import android.app.Activity
import android.content.Context
import android.content.Intent
import androidx.activity.result.contract.ActivityResultContract
import androidx.core.content.IntentCompat
import com.sanji.audio_test.ContactGroupInfo

/**
 * 启动我们自己的联系人组选择器。
 * Android没有标准的组件来实现此功能。
 */
class PickContactGroup : ActivityResultContract<Void?, ContactGroupInfo?>() {
    /**
     * 创建启动联系人组选择器Activity的Intent
     *
     * @param context 应用上下文
     * @param input 输入参数（此处为Void类型，不需要输入）
     * @return 启动PickContactGroupActivity的Intent
     */
    override fun createIntent(context: Context, input: Void?): Intent {
        return Intent(context, PickContactGroupActivity::class.java)
    }

    /**
     * 解析Activity返回的结果
     *
     * @param resultCode Activity结果代码
     * @param intent 返回的Intent数据
     * @return 如果结果为RESULT_OK，则返回选中的联系人组信息，否则返回null
     */
    override fun parseResult(resultCode: Int, intent: Intent?): ContactGroupInfo? {
        return intent.takeIf { resultCode == Activity.RESULT_OK }?.let {
            IntentCompat.getParcelableExtra(
                it,
                PickContactGroupActivity.RESULT_CONTACT_GROUP,
                ContactGroupInfo::class.java,
            )
        }
    }
}